home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / Clean 1.2.4 / IOInterface / dialogLayout.dcl < prev    next >
Encoding:
Modula Definition  |  1995-02-23  |  4.3 KB  |  133 lines  |  [TEXT/3PRM]

  1. definition module dialogLayout;
  2.  
  3.  
  4. //    Version 0.8 to 1.0
  5.  
  6.  
  7. from    mac_types        import Rect, DialogPtr, MacMenuHandle;
  8. from    deltaFont        import Font;
  9. from    deltaPicture    import DrawFunction, Picture;
  10. import    commonDef;
  11.  
  12.  
  13. ::    *DialogState *s *io;
  14. ::    DialogInfo;
  15.  
  16.     
  17. ::    DialogDef *s *io
  18.     =  PropertyDialog DialogId DialogTitle [DialogAttribute] (SetFunction s io)
  19.                       (ResetFunction s io) [DialogItem s io]
  20.     |  CommandDialog  DialogId DialogTitle [DialogAttribute]
  21.                       DialogItemId [DialogItem s io]
  22.     |  AboutDialog    ApplicationName PictureDomain [DrawFunction] (AboutHelpDef s io);
  23.  
  24. ::    DialogId        :== Int;
  25. ::    DialogTitle        :== String;
  26. ::    DialogAttribute
  27.     =    DialogPos    Measure Measure
  28.     |    DialogSize   Measure Measure
  29.     |    DialogMargin Measure Measure
  30.     |    ItemSpace    Measure Measure
  31.     |    StandByDialog;
  32. ::    Measure         =    MM Real | Inch Real | Pixel Int;
  33.  
  34. ::    ApplicationName    :== String;
  35. ::    AboutHelpDef *s *io
  36.     =    AboutHelp ItemTitle (AboutHelpFunction s io)
  37.     |    NoHelp;
  38. ::    AboutHelpFunction *s *io :== s -> *(io -> (s,io));
  39.  
  40. ::    DialogItem *s *io
  41.     =    DialogButton     DialogItemId ItemPos ItemTitle SelectState
  42.                                         (ButtonFunction s io)
  43.     |    DialogIconButton DialogItemId ItemPos PictureDomain IconLook SelectState
  44.                                         (ButtonFunction s io)
  45.     |    StaticText         DialogItemId ItemPos String
  46.     |    DynamicText         DialogItemId ItemPos TextWidth String
  47.     |    EditText         DialogItemId ItemPos TextWidth NrEditLines String
  48.     |    DialogPopUp         DialogItemId ItemPos SelectState DialogItemId
  49.                                         [RadioItemDef s io]
  50.     |    RadioButtons     DialogItemId ItemPos RowsOrColumns DialogItemId
  51.                                         [RadioItemDef s io]
  52.     |    CheckBoxes         DialogItemId ItemPos RowsOrColumns
  53.                                         [CheckBoxDef s io]
  54.     |    Control             DialogItemId ItemPos PictureDomain SelectState
  55.                                         ControlState ControlLook ControlFeel
  56.                                         (DialogFunction s io);
  57.  
  58. ::    DialogItemId    :==    Int;
  59. ::    ItemPos            =    Left | Center | Right | RightTo DialogItemId
  60.                     |    Below DialogItemId | XOffset DialogItemId Measure
  61.                     |    YOffset DialogItemId Measure | XY Measure Measure
  62.                     |    ItemBox Int Int Int Int;
  63. ::    IconLook        :== SelectState -> [DrawFunction];
  64. ::    TextWidth        :== Measure;
  65. ::    NrEditLines        :== Int;
  66. ::    RowsOrColumns    =    Rows Int | Columns Int;
  67.  
  68. ::    RadioItemDef *s *io
  69.     =    RadioItem DialogItemId ItemTitle SelectState            (DialogFunction s io);
  70. ::    CheckBoxDef     *s *io
  71.     =    CheckBox  DialogItemId ItemTitle SelectState MarkState    (DialogFunction s io);
  72.  
  73. ::    ControlState    =    BoolCS Bool | IntCS Int | RealCS Real | StringCS String
  74.                     |    PairCS ControlState ControlState | ListCS [ControlState];
  75. ::    ControlLook        :== SelectState -> ControlState -> [DrawFunction];
  76. ::    ControlFeel        :== MouseState  -> ControlState -> (ControlState,[DrawFunction]);
  77.  
  78. ::    SetFunction    *s *io :== ButtonFunction s io;
  79. ::    ResetFunction  *s *io :== ButtonFunction s io;
  80. ::    DialogFunction *s *io
  81.     :== DialogInfo -> (DialogState s io) -> DialogState s io;
  82. ::    ButtonFunction *s *io
  83.     :== DialogInfo -> (s -> *(io -> (s,io)));
  84.  
  85. ::    NoticeDef        =    Notice [String] NoticeButtonDef [NoticeButtonDef];
  86. ::    NoticeButtonDef    =    NoticeButton NoticeButtonId ItemTitle;
  87. ::    NoticeButtonId    :==    Int;
  88.  
  89. ::    ItemInfo        :== (    [(DialogItemId,String)],
  90.                             [(DialogItemId,DialogItemId)],
  91.                             [(DialogItemId,[(DialogItemId,Bool)])],
  92.                             [(DialogItemId,ControlState)]    );
  93.  
  94. ::    DialogRep     *s *io
  95.     :==    (    !DialogHandle s io,
  96.             !DialogPtr    );
  97. ::    NoticeHandle *s *io
  98.     =    NoticeH Rect [DialogItem s io];
  99. ::    DialogHandle *s *io
  100.     =    DialogH DialogId DialogTitle DialogMode Rect [PopUpHandle]
  101.             [DialogItem s io] DialogDefInfo;
  102. ::    DialogMode
  103.     =    Modal
  104.     |    Modeless;
  105. ::    DialogDefInfo
  106.     =    DialogRest DialogKind [DialogAttribute] DialogItemId;
  107.     //    The last argument is the id of the default button.
  108. ::    DialogKind
  109.     =    Property
  110.     |    Command;
  111. ::    PopUpHandle
  112.     :==    (    !DialogItemId,
  113.             !MacMenuHandle    );
  114.  
  115.  
  116. CreateDialogState        :: !(!DialogRep s io, !Toolbox) -> DialogState s io;
  117. UnpackDialogState        :: !(DialogState s io) -> (!DialogRep s io, !Toolbox);
  118. DialogInfoToItemInfo    :: !DialogInfo -> ItemInfo;
  119. DialogHandleToDialogInfo:: !(DialogHandle s io) -> DialogInfo;
  120.  
  121.      
  122. LineHeight    :== 16;        // The line height of the Macintosh dialog font: Plain Chicago 12.
  123. BaseOfs        :== 12;        // Ascent+Leading of the Macintosh dialog font.
  124. MinButWid    :== 55;
  125. ButHgt        :== 20;
  126.  
  127.     
  128. CalcItemBoxes        :: !(!Int,!Int) !(!Int,!Int) ![DialogItem s io]
  129.                     -> (!Int,!Int,![DialogItem s io]);
  130. DialogFont            :: Font;
  131. HorMeasureToPixels    :: !Measure  -> Int;
  132. VerMeasureToPixels    :: !Measure  -> Int;
  133.